﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;
using DevExpress.XtraEditors;
using System.Drawing;
using System.Data;


namespace QuanLyHocSinh
{
    class GlobalFunction
    {
        /// <summary>
        /// Không cho phép nhập số vào TextEdit (chỉ được nhập kí tự)
        /// </summary>
        public static void KhongChoPhepNhapSo(KeyPressEventArgs e)
        {
            if (Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar))
                e.Handled = true;
        }

        /// <summary>
        /// Không cho phép nhập kí tự vào TextEdit (chỉ được nhập số)
        /// </summary>
        public static void KhongChoPhepNhapKiTu(KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar))
                e.Handled = true;
        }

        /// <summary>
        /// Không cho phép nhập quá kí tự ở TextEdit (vì ở CSDL khai báo bao nhiêu thì chỉ được sài bấy nhiêu)
        /// </summary>
        public static void KiemTraChieuDaiChuoi(string ChuoiKT, int KichThuoc, KeyPressEventArgs e)
        {
            if (ChuoiKT.Length > KichThuoc && !Char.IsControl(e.KeyChar))
                e.Handled = true;
        }

        /// <summary>
        /// Kiểm tra xem độ dài chuỗi có nằm trong khoảng quy định không (ví dụ kích thước SDT fải lớn hơn 9 số (SDT bàn or di động) và nhỏ hơn 12 số)
        /// </summary>
        public static bool KiemTraDoDaiChuoi(string ChuoiKT, int KTNganNhat, int KTDaiNhat)
        {
            if (ChuoiKT.Length < KTNganNhat || ChuoiKT.Length > KTDaiNhat)
                return false;
            return true;
        }

        /// <summary>
        /// Length của TextEdit chỉ được bằng kích thước cho fép (không được nhỏ hoặc lớn hơn) 
        /// áp dụng cho CMND
        /// </summary>
        public static void NhapDungDoDaiChuoi(string ChuoiKT, int KichThuoc, KeyPressEventArgs e)
        {
            if (ChuoiKT.Length == KichThuoc && !Char.IsControl(e.KeyChar))
                e.Handled = true;
        }

        /// <summary>
        /// Kiểm tra xem chuỗi có phải toàn số không?
        /// </summary>
        public static bool KiemTraNhapSo(string ChuoiKT)
        {
            Regex regex = new Regex(@"^[-+]?[0-9]*\.?[0-9]+$");
            return regex.IsMatch(ChuoiKT);
        }

        /// <summary>
        /// Kiểm tra xem chuỗi có đúng định dạng email hay không?
        /// </summary>
        public static bool KiemTraEmail(string ChuoiKT)
        {
            string strRegex = @"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}" +
         @"\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\" + 
         @".)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$";
           Regex re = new Regex(strRegex);
           if (re.IsMatch(ChuoiKT))
                return (true);
           else
                return (false);
        }


        /// <summary>
        /// Kiểm tra xem các TextEdit có rỗng không?
        /// </summary>
        public static bool KiemTraTextEditRong(List<TextEdit> TbParams)
        {
            foreach (TextEdit param in TbParams)
            {
                if (param.Text == "")
                    return false;
            }
            return true;
        }

        /// <summary>
        /// Dùng để kiểm tra xem ngày nhập vào có nhỏ hơn ngày kiểm tra không
        /// Dùng để kiểm tra ngày sinh, ngày bắt đầu và ngày kết thúc của lịch trình
        /// Dùng để kiểm tra ngày bán vé
        /// </summary>
        public static int KiemTraDateEditRong(List<DateEdit> DtParams)
        {
            foreach (DateEdit param in DtParams)
            {
                if (param.EditValue == null)
                    return 0;
            }
            return 1;
        }

        /// <summary>
        /// Xóa nội dung trong TextEdit
        /// </summary>
        public static void XoaNoiDungTextEdit(List<TextEdit> TbParams)
        {
            foreach (TextEdit param in TbParams)
                param.Text = "";
        }

        /// <summary>
        /// Thay đổi màu sắc dòng lẻ và dòng chẵn trong GridView
        /// </summary>
        public static void RowCellStyle(DevExpress.XtraGrid.Views.Grid.RowCellStyleEventArgs e)
        {
            if (e.RowHandle >= 0)
            {
                if (e.RowHandle % 2 == 0)
                    e.Appearance.BackColor = Color.LightYellow;
                else
                    e.Appearance.BackColor = Color.Ivory;
            }
        }

        /// <summary>
        /// Hàm kiểm tra xóa 1 dòng được chọn, nếu dòng đó không tồn tại trong các bảng có quan hệ với nó
        /// </summary>
        public static int KiemTraXoa(DataTable Dtb, string TenMaKT, string MaKT)
        {
            DataRow[] DrsNV = Dtb.Select(TenMaKT + MaKT);
            return DrsNV.Length;
        }

        public static void XoaNoiDungDateEdit(List<DateEdit> DtParams)
        {
            foreach (DateEdit param in DtParams)
            {
                param.EditValue = null;
            }
        }

        public static int KiemTraLookUpEditChuaChon(List<LookUpEdit> LkParams)
        {
            foreach (LookUpEdit param in LkParams)
            {
                if (param.ItemIndex == -1)
                    return 0;
            }
            return 1;
        }

        public static void XoaNoiDungLookUpEdit(List<LookUpEdit> LkParams)
        {
            foreach (LookUpEdit param in LkParams)
            {
                param.ItemIndex = -1;
                param.EditValue = DBNull.Value.ToString();
            }
        }

        public static DataTable LietKeLookEdit(string NameProc)
        {
            return DAO.SQLDataProvider.ExecuteQueryString(NameProc);
        }

        public static bool KiemTraItNhatMotTextEditCoNoiDung(List<TextEdit> TbParams)
        {
            int i = 0;
            foreach (TextEdit param in TbParams)
            {
                if (param.Text != "")
                    i++;
            }
            if (i > 0)
                return true;
            return false;
        }
    }
}
